package cn.tools.antiSamy.config;

import cn.tools.antiSamy.filter.XSSFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.HashMap;
import java.util.Map;
import java.util.StringJoiner;

/**
 * @author: e
 * @date: 2021/12/8
 * @description: 初始化过滤器对象，用于使我们自定义的XssRequestWrapper类生效
 *
 * 其他服务使用此模块的方法：
 * 在依赖了此模块后，在对应资源路径下创建antisamy包，放入antisamy-ebay.xml文件即可使用
 *
 */

@Configuration
public class AntiSamyAutoConfiguration {

    /**
     * 配置跨站攻击过滤器
     */
    @Bean
    public FilterRegistrationBean filterRegistrationBean() {
        //将我们创建出来的过滤器放入FilterRegistrationBean注册器中，因为过滤器属于web层组件，所以这里要将他交给web层组件进行注册处理
        FilterRegistrationBean filterRegistration = new FilterRegistrationBean(new XSSFilter());
        //设定拦截那些请求，这里/*表示拦截所有
        filterRegistration.addUrlPatterns("/*");
        //设定order排序
        filterRegistration.setOrder(1);


        //设定列表集
        Map<String,String> initParameters = new HashMap<>(2);
        //构造需要放行的路径
        String excludes = new StringJoiner(",")
                .add("/favicon.ico")
                .add("/login")
                .toString();

        //将放行路径放入
        initParameters.put("excludes",excludes);
        initParameters.put("isIncludeRichText","true");

        //调用setInitParameters方法设定放行
        filterRegistration.setInitParameters(initParameters);

        return filterRegistration;
    }




}